package com.yuntsg.nnsfcp.test.test;

import com.aspose.words.Border;
import com.aspose.words.DocumentBuilder;
import com.aspose.words.LineStyle;
import com.aspose.words.ParagraphAlignment;
import lombok.Data;
import lombok.SneakyThrows;

public class WordInsertTable {
    @SneakyThrows
    public static void main(String[] args) {
        // 2023年11月21日16:11:58  测试模板添加表格布局等信息
        // 获取license 防止有水印
//        if (!getLicense()) {
//            return;
//        }
        // 参考文章 2023年11月21日18:47:00
        //  https://blog.csdn.net/qq_42677452/article/details/111933916
        //  https://blog.csdn.net/whlqunzhu/article/details/106518515
        String rootPath = "F:\\qfworkspace\\idea\\novelty_qbs\\src\\main\\webapp\\upload\\temmp\\";
        String fileName = System.currentTimeMillis() + ".docx";
        com.aspose.words.Document doc = new com.aspose.words.Document("F:\\qfworkspace\\idea\\novelty_qbs\\src\\main\\webapp\\upload\\查新报告国内3.doc");
        DocumentBuilder builder = new DocumentBuilder(doc);
//        builder.moveToField();
        //设置一个书签进行移动到这里添加图标 在word 里面查找
        builder.moveToBookmark("jsjgzb");
        //第一行第一列
        // //垂直居中
//        builder.getCellFormat().setVerticalAlignment(CellVerticalAlignment.CENTER);
        //垂直居中 设置里面文字居中
        builder.getParagraphFormat().setAlignment(ParagraphAlignment.CENTER);
        //设置此行高度
        builder.getRowFormat().setHeight(29);
        //设置单元格文本的格式
        builder.getCellFormat().setLeftPadding(4D);
        builder.getCellFormat().setRightPadding(4D);

        Border leftNone = builder.getCellFormat().getBorders().getLeft();
        Border righSINGLE = builder.getCellFormat().getBorders().getRight();
        leftNone.setLineStyle(LineStyle.NONE);
        righSINGLE.setLineStyle(LineStyle.SINGLE);

        //左边没有 右侧有
        builder.insertCell();
        builder.write("检索工具种类\n" +
                "总数");
        builder.insertCell();//插入单元格
        builder.write("检索年限\n" +
                "（起止年）");
        builder.insertCell();//插入单元格
        builder.write("检索文献\n" +
                "总量");
        builder.insertCell();//插入单元格
        builder.write("检  出\n" +
                "文献量");
        Border righNone = builder.getCellFormat().getBorders().getRight();
        righNone.setLineStyle(LineStyle.NONE);
        Border leftSINGLE = builder.getCellFormat().getBorders().getLeft();
        leftSINGLE.setLineStyle(LineStyle.SINGLE);
        builder.insertCell();//插入单元格
        builder.write("密切相关\n" +
                "文献量");
        builder.endRow();//结束当前行

        //设置单元格文本的格式
        Border leftNone2 = builder.getCellFormat().getBorders().getLeft();
        Border righSINGLE2 = builder.getCellFormat().getBorders().getRight();
        leftNone2.setLineStyle(LineStyle.NONE);
        righSINGLE2.setLineStyle(LineStyle.SINGLE);
        builder.insertCell();//插入单元格
        builder.write("第二行第一列");
        builder.insertCell();//插入单元格
        builder.write("第二行第2列");
        builder.insertCell();//插入单元格
        builder.write("第二行第3列");
        builder.insertCell();//插入单元格
        builder.write("第二行第4列");
        Border righNone2 = builder.getCellFormat().getBorders().getRight();
        righNone2.setLineStyle(LineStyle.NONE);
        Border leftSINGLE2 = builder.getCellFormat().getBorders().getLeft();
        leftSINGLE2.setLineStyle(LineStyle.SINGLE);
        builder.insertCell();//插入单元格
        builder.write("第二行第5列");
        builder.endRow();//结束当前行
        builder.endTable();
        // 结束一个表格进行清除格式 防止
        builder.getRowFormat().clearFormatting();
        builder.getCellFormat().clearFormatting();
        builder.getParagraphFormat().clearFormatting();


        //水平合并
        // 参数
        //NONE：不合并
        //FIRST：需要合并的第一个单元格
        //PREVIOUS：要与设置FIRST的单元格进行合并的单元格需要设置为PREVIOUS
//        builder.insertCell();//插入单元格
//        builder.getCellFormat().setHorizontalMerge(CellMerge.FIRST);
//        builder.getParagraphFormat().setAlignment(ParagraphAlignment.LEFT);
//        builder.getRowFormat().setHeight(16);
//
//        builder.write("2．各检索工具检索情况一览表");
//        //需要合并的单元格都需要添加PREVIOUS
//        builder.insertCell();//插入单元格
//        builder.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
//        builder.insertCell();
//        builder.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
//        builder.insertCell();
//        builder.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
//        builder.insertCell();
//        builder.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
//        builder.insertCell();
//        builder.getCellFormat().setHorizontalMerge(CellMerge.PREVIOUS);
//        builder.endRow();//结束当前行
//        builder.endTable();
//        // 信息显示
//        builder.getRowFormat().clearFormatting();
//        builder.getCellFormat().clearFormatting();
//        builder.getParagraphFormat().clearFormatting();
//        builder.getCellFormat().setVerticalAlignment(CellVerticalAlignment.CENTER);
//        // //垂直居中
//        builder.getParagraphFormat().setAlignment(ParagraphAlignment.CENTER);
//        //设置此行高度
//        builder.getRowFormat().setHeight(15);
//        //设置单元格文本的格式
//        builder.insertCell();
//        builder.write("检索工具体\n" + "(库/刊等)");
//        builder.insertCell();//插入单元格
//        builder.write("检索年限期\n" + "(起止年)");
//        builder.insertCell();//插入单元格
//        builder.write("检索文献\n" + "总量");
//        builder.insertCell();//插入单元格
//        builder.write("检  出\n" + "文献量");
//        builder.insertCell();//插入单元格
//        builder.write("密切相关\n文献量");
//        builder.endRow();//结束当前行
//
////        builder.getRowFormat().clearFormatting();
////        builder.getCellFormat().clearFormatting();
////        builder.getParagraphFormat().clearFormatting();
////        builder.getCellFormat().setVerticalAlignment(CellVerticalAlignment.CENTER);
////        // //垂直居中
////        builder.getParagraphFormat().setAlignment(ParagraphAlignment.CENTER);
//        //设置此行高度
//
//        List<dbInfo> res = new ArrayList<>();
//        for (int i = 0; i < 6; i++) {
//            dbInfo dbInfo = new dbInfo();
//            dbInfo.setName("万方数据库");
//            dbInfo.setYearRange("1982--2021年10月");
//            dbInfo.setSearchSize("16683548");
//            dbInfo.setSearchReal("16683");
//            dbInfo.setSimi("166");
//            res.add(dbInfo);
//        }
//
//
//        //必须加上 否则出现格式不对 不要让上面的格式影响下面的铺展数据
//
//        builder.getRowFormat().clearFormatting();
//        builder.getCellFormat().clearFormatting();
//        builder.getParagraphFormat().clearFormatting();
//        builder.getParagraphFormat().setAlignment(ParagraphAlignment.LEFT);
//        builder.getRowFormat().setHeight(18);
//        // 边框 无显示
//        builder.getRowFormat().getBorders().setLineStyle(LineStyle.NONE);
//        for (dbInfo re : res) {
//            //设置此行高度
//            //设置单元格文本的格式
//            builder.insertCell();
//            builder.write(re.getName());
//            builder.insertCell();
//            builder.write(re.getYearRange());
//            builder.insertCell();
//            builder.write(re.getSearchSize());
//            builder.insertCell();
//            builder.write(re.getSearchReal());
//            builder.insertCell();
//            builder.write(re.getSimi());
//            builder.endRow();
//        }
//        builder.endTable();
//
//        //模拟数据 后面设置成真实的
//        // 需要把当前node 居左
//        builder.moveToBookmark("jsjgzb");
//        //让原来的文字居中的居左
//        builder.getParagraphFormat().setAlignment(ParagraphAlignment.LEFT);
//
//        // HorizontalAnchor – 用于计算浮动表水平位置的对象
//        //VerticalAnchor – 用于计算浮动表垂直位置的对象
//        //AbsoluteHorizontalDistance – 绝对水平浮动表位置
//        //AbsoluteVerticalDistance – 绝对垂直浮动表位置
//        //AllowOverlap – 启用/禁用与其他浮动对象重叠的选项
//        //RelativeHorizontalAlignment – 浮动表相对水平对齐方式。
//        //RelativeVerticalAlignment – 浮动表相对垂直对齐方式。
//        builder.getRowFormat().clearFormatting();
//        builder.getCellFormat().clearFormatting();
//        builder.getParagraphFormat().clearFormatting();
//        // table 首先在模板六面设置好位置就不要调了
//        Table Table1 = (Table) doc.getChild(NodeType.TABLE, 0, true);
//        Table1.setAlignment(TableAlignment.CENTER);
//        Table Table2 = (Table) doc.getChild(NodeType.TABLE, 1, true);
//        Table2.setAlignment(TableAlignment.CENTER);
//        Table Table3 = (Table) doc.getChild(NodeType.TABLE, 2, true);
//        Table3.setAlignment(TableAlignment.CENTER);
//        Cell firstCell = Table3.getFirstRow().getLastCell();
//        firstCell.getFirstParagraph().getParagraphFormat().setAlignment(CellVerticalAlignment.CENTER);

//        Table.setBottomPadding(30);
//        String text = Table.getRows().get(0).getFirstCell().getText();
//        Section lastSection = doc.getLastSection();


//        builder.getParagraphFormat().setAlignment(ParagraphAlignment.LEFT);
//        builder.getCellFormat().setVerticalAlignment(CellVerticalAlignment.BOTTOM);

        //build 结束

        doc.save(rootPath + fileName);


    }

    @Data
    public static class dbInfo {

        private String name;
        private String yearRange;
        private String searchSize;
        private String searchReal;
        private String simi;
    }
}
